iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 9
2
Software Development

Kotlin for Android系列 第 9

Day 09. Kotlin 語言學習 - 迴圈控制

  • 分享至 

  • xImage
  •  

  Kotlin 的迴圈 (loop) for … in 代表著將 in 關鍵字後的群組拆分成 in 前的個體,再於 { } 中依序訪問,若用在字串上則會拆解為一個一個字元,如下圖的 Line: 4 所示;用在 List 則會巡迴所有成員,在 Line: 11 示範;hashMap 上可拆成 KeyValue 兩個變數在迴圈內使用,於 Line: 17 展示。

https://ithelp.ithome.com.tw/upload/images/20181023/20111944AXEYqi00CM.png


  當然 for 也能用於一般的數值遞增迴圈,起始值與最終值以 .. 連接,可以直接使用整數數字也能代入變數,如下圖左邊的示範。另外,在下圖右邊展示除了直接設定數值之外,也能放入運算元計算,迴圈預設每次增加量是 1 ,這裡可加上 step 關鍵字調整每次迴圈增加量。

https://ithelp.ithome.com.tw/upload/images/20181023/20111944WHaXPF1b94.png

  上圖中的 .. 在 C#、JS 中表達就是 <=,Kotlin 有提供 < 的表示方式:until,如下圖左邊範例。另一種延伸是使用 downTo 關鍵字,由於 step 一定要指定正整數,所以若使用 .. 沒辦法做遞減迴圈 (也許未來 Kotlin 版本會調整,目前這篇文章撰寫時的版本為 1.3),此時就要改用 downTo,其中 T 一定要大寫,然後再把最大值放在最小值前方,迴圈就會依照 step 數值從最大值開始遞減,簡單來說就是 >= 的概念,如下圖右邊的使用方法。

https://ithelp.ithome.com.tw/upload/images/20181023/20111944ScLDBsZShT.png

  作者寫到這邊不得不說 Kotlin 在迴圈這部份的設計 until、downTo、step 真的不好用,除了需要多打幾個字,在設計上也不是很方便,導致在寫這篇時一整個呈現驚訝狀態。


  接著介紹另外兩種迴圈使用方式,一個是 while 另一個是 do,使用方式與其他語言相同,相信大家都很熟悉,皆是滿足 () 括號內的條件時,就會執行迴圈,當設計有瑕疵時就會導致無限迴圈,這點需要特別小心。另外 whiledo 的差別就是,do 無論如何都會先執行一次,也就是 Just do it 的概念...。

  還有一點,在 whiledo 迴圈中,因為需要對變數 a 進行計算,所以這邊需要使用 var 宣告。

https://ithelp.ithome.com.tw/upload/images/20181023/20111944X14rXpJQvA.png


  講到迴圈就得再介紹 breakcontinuelabel 三種彈性控制迴圈的方法,控制迴圈時會搭配 if 判斷式進行,當遇到 break 關鍵字時,就會直接中斷並跳離迴圈範圍,繼續之後的程式碼;遇到 continue 時,在這之後的迴圈工作都會略過,直接執行回到迴圈判斷式的地方執行,需注意的地方是使用 continue 時,要注意設計在增量值 (a++) 後方,否則你的迴圈條件不會改變,只會不斷的 continue 陷入無限迴圈之中。

https://ithelp.ithome.com.tw/upload/images/20181023/20111944aTHpY7gEiA.png


  Kotlin 有提供 Label 的功能,能夠幫助您在設計複雜迴圈程式段時,將各層級的迴圈貼上標籤,如此一來在使用 breakcontinue 時,就能直接指定操作對象,能夠更靈活的使用,下圖示意各層級的程式流程,Line: 7~10 在正常設計中並不會接著使用,前方的驚嘆號 IDE 會提示你該段程式碼永遠不會執行到。

https://ithelp.ithome.com.tw/upload/images/20181023/20111944dFiY3KNoWC.png

  今日的課程就學習到這邊,關於程式語言的課程還有三篇,但內容的難度會比之前的要深一點,下一章將介紹 Kotlin 物件導向的概念,我們明天見!


資料參考

Returns and Jumps: break and continue - Kotlin Programming Language
https://kotlinlang.org/docs/reference/returns.html


上一篇
Day 08. Kotlin 語言學習 - 函式、判斷式、集合
下一篇
Day 10. Kotlin 基本物件導向
系列文
Kotlin for Android30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言